/*************************************************************************
	> File Name: dispose.h
	> Author: 
	> Mail: 
	> Created Time: 2018年08月28日 星期二 09时19分02秒
 ************************************************************************/

#ifndef _DISPOSE_H
#define _DISPOSE_H

#include <struct.h>
#include <collect_data.h>
#include <config_file.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include <fcntl.h>
#include <stdio.h>

//读取配置信息
/*
 * 函数名:read_config
 * 功能:读取配置信息
 * 参数:config *con:读取配置信息成功后,通过该结构体返回
 * 返回值:成功返回OK,失败返回ERR
 */
int read_config(config *con);

//数据处理
/*
 * 函数名:data_dispose
 * 功能:对数据进行处理,保证精确度,取10次数据的平均值
 * 参数:env_data *env:环境数据结构体指针,用来返回处理后的数据
 * 返回值:成功返回OK,失败返回ERR
 */
int data_dispose(server_to_client *stc, adm_state *adm_s, int fifo_fd, config *con);

//数据判断
/*
 * 函数名:data_judge
 * 功能:对数据进行判断,是否需要改变设备状态等
 * 参数:server_to_client *stc:环境数据结构体指针,用来返回处理后的数据
 *		config *con:配置信息结构体
 * 		int *t:标志数据,用来标志是否需要改变设备状态,0表示不需要改变
 * 返回值:成功返回OK,失败返回ERR
 */
int data_judge(server_to_client *stc, config *con);

//管道数据接受
/*
 * 函数名:read_fifo_data
 * 功能:接收管道内的数据
 * 参数:adm_state *adm_s:接收到的客户端登录状态变化数据
 * 返回值:成功返回OK,失败返回ERR
 */
int read_fifo_data(adm_state *adm_s, int fifo_fd, config *con);

//向M0板线程发送数据
/*
 * 函数名:write_M0_data
 * 功能:向M0板发送数据
 * 参数:dev dev:设备状态控制结构体
 * 返回值:成功返回OK,失败返回ERR
 */
int write_M0_data(env_dev_rfid_card edr);

//向数据库操作进程发送数据
/*
 * 函数名:write_sql_data
 * 功能:向数据库操作线程发送数据
 * 参数:server_to_client *stc:要保存的数据结构体
 * 返回值:成功返回OK,失败返回ERR
 */
int write_sql_data(server_to_client *stc);

//向客户端发送数据
//向数据库操作进程发送数据
/*
 * 函数名:write_cli_data
 * 功能:向客户端发送数据
 * 参数:server_to_client *stc:要保存的数据结构体
 *		adm_state *adm_s:客户端登录状态
 * 返回值:成功返回OK,失败返回ERR
 */
int write_cli_data(server_to_client *stc, adm_state *adm_s);

//判断环境数据是否正常
int jusge(float tem, float max_tem, float min_tem);

#endif
